package com.py.pythink.third;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;

import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;

public class QrCodeUtil {
    /**
     * 生成二维码图片
     * msg 二维码的大小
     * width 二维码的大小
     * os 输出流
     */
    public static void createQrCode(String msg, int width, OutputStream os){
        //1.实例化 二维码输出对象
        QRCodeWriter qrCodeWriter = new QRCodeWriter();

        //2.完成参数设置
        Map<EncodeHintType, Object> params = new HashMap<>();
        //编码格式，防止乱码  不然二维码显示的中文容易会乱码
        params.put(EncodeHintType.CHARACTER_SET,"UTF-8");
        //外边距
        params.put(EncodeHintType.MARGIN,1);
        //生成二维码位图
        try {
            BitMatrix bitMatrix = qrCodeWriter.encode(msg, BarcodeFormat.QR_CODE, width, width, params);//这个方法
        //写出到指定的流中
            MatrixToImageWriter.writeToStream(bitMatrix, "PNG", os);

        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}
